package vn.sunnet.game.SinhTon.object;

import vn.sunnet.game.SinhTon.global.Assets;
import vn.sunnet.game.SinhTon.global.Dimension;

import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.MathUtils;

public class Bullet extends DynamicGameObject {
	private int id;
	private float angle; // góC

	private final int LENGTH = 123;// Chieu dai tu tam quay cua nguoi den tam
									// dan
	private final int SPEED = 900; // Toc do bay cua dan

	private float x1, y1;

	public Bullet(int id) {
		super(0, 0, 0, 0);
		this.id = id;
		bounds.height = this.getTexture().getRegionHeight();
		bounds.width = this.getTexture().getRegionWidth();
	}

	public void createFunction(float x1, float y1) {
		// 1.03f la sai so khi tinh angle. Khi chay cho angle *1.03f thi thay
		// chinh xac hon
		// angle = (float) Math.toDegrees(Math
		// .atan((x1 - Dimension.CENTER_SCREEN_X) / y1)) * 1.03f;

		angle = (float) Math.toDegrees(Math
				.atan((x1 - Dimension.CENTER_SCREEN_X) / y1)) * 1.03f;
		if (angle > 79)
			angle = 79;
		else if (angle < -79)
			angle = -79;
		// Vị trí ban đầu của đạn
		position.x = 400 - LENGTH * MathUtils.sinDeg(-angle);
		position.y = LENGTH * MathUtils.cosDeg(angle);

		// Tốc độ di chuyển của đạn
		velocity.x = SPEED * MathUtils.sinDeg(angle);
		velocity.y = SPEED * MathUtils.cosDeg(angle);
	}

	public float getAngle() {
		return angle;
	}

	public void setAngle(float angle) {
		this.angle = angle;
	}

	public TextureRegion getTexture() {
		return Assets.bullet_Region.get(id);
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public boolean isFly() {
		// Nếu đạn bay ra khỏi ngoài màn hình thì return false, còn ko thì true
		return (position.y < Dimension.H_MAX && position.x > -30 && position.x < Dimension.W_MAX);
	}

	// Cập nhật di chuyển và hình chữ nhật của đạn
	public void move(float deltaTime) {
		position.add(velocity.x * deltaTime, velocity.y * deltaTime);
		bounds.x = position.x - bounds.width / 2;
		bounds.y = position.y - bounds.height / 2;
	}

	public float getX1() {
		return x1;
	}

	public float getY1() {
		return y1;
	}

}
